Many different types of computing systems have attained widespread use around the world. These computing systems include personal computers, servers, mainframes and a wide variety of stand-alone and embedded computing devices. Sprawling client-server systems exist, with applications and information spread across many PC networks, mainframes and minicomputers. In a distributed system connected by networks, a user may access many application programs, databases, network systems, operating systems and mainframe applications. Computers provide individuals and businesses with a host of software applications including word processing, spreadsheet, accounting, e-mail, voice over Internet protocol telecommunications, and facsimile.
Users of digital processors such as computers continue to demand greater and greater performance from such systems for handling increasingly complex and difficult tasks. In addition, processing speed has increased much more quickly than that of main memory accesses. As a result, cache memories, or caches, are often used in many such systems to increase performance in a relatively cost-effective manner. Many modern computers also support “multi-tasking” or “multi-threading” in which two or more programs, or threads of programs, are run in alternation in the execution pipeline of the digital processor. A common architecture for high performance, single-chip microprocessors is the reduced instruction set computer (RISC) architecture characterized by a small simplified set of frequently used instructions for rapid execution. Thus, in a RISC architecture, a complex instruction comprises a small set of simple instructions that are executed in steps very rapidly. These steps are performed in execution units adapted to execute specific simple instructions. In a superscalar architecture, these execution units typically comprise load/store units, integer Arithmetic/Logic Units, floating point Arithmetic/Logic Units, and Graphical Logic Units that operate in parallel. In a processor architecture, an operating system controls operation of the processor and components peripheral to the processor. Executable application programs are stored in a computer's hard drive. The computer's processor causes application programs to run in response to user inputs.
Thus, a manufacturer will typically manufacture a variety of different computing systems that include tower models, notebook models and workstations. When a computer is manufactured it should be thoroughly tested before shipping to a customer. For example, a test of a computer may be conducted by causing the operating system to perform various routine functions and monitoring the performance. These routine functions may comprise copying files, changing computing environments and executing operating system subroutines. Thus, desirably, a multitude of tests are performed on the computing system before final packing and shipping. These tests must be performed for many, many computing systems.
Typically, the software for testing a computer resides on the computer itself. More specifically, the computer will contain a list of commands that cause the processor of the computer to execute one or more test programs. Various functional attributes of the computer are tested. Each command contained in the list of commands for testing the computer may require an associated environment within which to execute the command. The environment that a command needs includes two aspects. The first aspect is the current working directory. The second aspect is a list of memory based keyword/value pairs commonly referred to as environment variables. For example, an environment variable with a keyword of PATH may specify a value indicating a path of directories to search to find programs. To execute a command that requires a specific environment, there must be prior command(s) that specifically set the environment required for the command. Note that after setting an environment variable it remains in effect until it is removed or changed with another command. Thus, commands are executed in a specified environment.
Testing can be very time consuming, since the test software on each computer must be actuated and monitored individually. Thus, there is a need for a faster, automated testing method.